package com.letv.so.util;

import com.letv.so.bean.AlbumBean;
import com.letv.so.bean.BaseDataBean;
import com.letv.so.bean.StarBean;
import com.letv.so.bean.VideoBean;
import com.letv.so.constants.Constants;

/**
 * 生成搜索内部主键soKey的工具类：soKey = 渠道_类型_ID_站点
 * 
 * @author wenjian
 * 
 */
public class SoKeyUtil {
	/**
	 * 
	 * @param bean
	 * @return
	 */
	public static String getSoKey(BaseDataBean bean) {
		String id = null;
		int dataType = bean.getDataType();
		switch (bean.getDataType()) {
			case Constants.ALBUM:
				id = ((AlbumBean) bean).getAid();
				break;
			case Constants.VIDEO:
				id = ((VideoBean) bean).getVid();
				break;
			case Constants.STAR:
				id = ((StarBean) bean).getSid();
				break;
			default:
				break;
		}
		return getSoKey(bean.getSrc(), dataType, id);
	}

	/**
	 * 
	 * @param src
	 * @param dataType
	 * @param id
	 * @return
	 */
	public static String getSoKey(String src, int dataType, String id) {
		StringBuilder soKey = new StringBuilder();

		/**
		 * 渠道
		 */
		if (Constants.SRC_PTV.equals(src)) {
			soKey.append("ptv_");
		} else if (Constants.SRC_VRS.equals(src)) {
			soKey.append("vrs_");
		} else if (Constants.SRC_LESO.equals(src)) {
			soKey.append("leso_");
		} else if (Constants.SRC_IPTV.equals(src)) {
			soKey.append("iptv_");
		}

		/**
		 * 类型
		 */
		switch (dataType) {
			case Constants.ALBUM:
				soKey.append("a_");
				break;
			case Constants.VIDEO:
				soKey.append("v_");
				break;
			case Constants.STAR:
				soKey.append("s_");
				break;
			default:
				break;
		}

		/**
		 * ID
		 */
		soKey.append(id);

		return soKey.toString();
	}

	/**
	 * 
	 * @param src
	 * @param dataType
	 * @param id
	 * @return
	 */
	public static String getSoKey(String src, int dataType, String id, boolean mmsFlag) {
		StringBuilder soKey = new StringBuilder();
		if (mmsFlag) {
			soKey.append("newmms_");
		}

		/**
		 * 渠道
		 */
		if (Constants.SRC_PTV.equals(src)) {
			soKey.append("ptv_");
		} else if (Constants.SRC_VRS.equals(src)) {
			soKey.append("vrs_");
		} else if (Constants.SRC_LESO.equals(src)) {
			soKey.append("leso_");
		} else if (Constants.SRC_IPTV.equals(src)) {
			soKey.append("iptv_");
		}

		/**
		 * 类型
		 */
		switch (dataType) {
			case Constants.ALBUM:
				soKey.append("a_");
				break;
			case Constants.VIDEO:
				soKey.append("v_");
				break;
			case Constants.STAR:
				soKey.append("s_");
				break;
			default:
				break;
		}

		/**
		 * ID
		 */
		soKey.append(id);

		return soKey.toString();
	}

	/**
	 * 通过soKey解析出src
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getSrc(String soKey) {
		String src = null;
//		if (soKey.startsWith("ptv_")) {
//			src = Constants.SRC_PTV;
//		} else if (soKey.startsWith("vrs_")) {
//			src = Constants.SRC_VRS;
//		} else if (soKey.startsWith("leso_")) {
//			src = Constants.SRC_LESO;
//		} else if (soKey.startsWith("iptv_")) {
//			src = Constants.SRC_IPTV;
//		} else if (soKey.startsWith("live_")) {
//			src = Constants.SRC_LIVE;
//		}
		if (soKey.contains("vrs_")) {
			src = Constants.SRC_VRS;
        }else if (soKey.contains("leso_")) {
        	src = Constants.SRC_LESO;
        }
		return src;
	}

	/**
	 * 通过soKey解析出dataType
	 * 
	 * @param soKey
	 * @return
	 */
	public static int getDataType(String soKey) {
		int dataType = 0;
		if (soKey.contains("_a_")) {
			dataType = Constants.ALBUM;
		} else if (soKey.contains("_v_")) {
			dataType = Constants.VIDEO;
		} else if (soKey.contains("_s_")) {
			dataType = Constants.STAR;
		}
		return dataType;
	}

	/**
	 * 通过soKey解析出ID
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getID(String soKey) {
		return getSoKeySegment(soKey, 3);
	}

	/**
	 * 通过soKey解析出website
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getWebSite(String soKey) {
		return getSoKeySegment(soKey, 4);
	}

	/**
	 * 取得soKey指定段
	 * 
	 * @param sokey
	 * @param i
	 * @return
	 */
	public static String getSoKeySegment(String sokey, int i) {
		String[] soKeySegments = sokey.split("_");
		if (i <= soKeySegments.length) {
			return soKeySegments[i - 1];
		} else {
			return null;
		}
	}

	public static void main(String[] args) {
		System.out.println(getID("newleso_a_24255"));
		System.out.println(getSrc("newleso_a_24255"));
	}
}
